---
title: ハンドオフ
description: Delegate tasks from one agent to another
---

import { Code } from '@astrojs/starlight/components';
import basicUsageExample from '../../../../../../examples/docs/handoffs/basicUsage.ts?raw';
import customizeHandoffExample from '../../../../../../examples/docs/handoffs/customizeHandoff.ts?raw';
import handoffInputExample from '../../../../../../examples/docs/handoffs/handoffInput.ts?raw';
import inputFilterExample from '../../../../../../examples/docs/handoffs/inputFilter.ts?raw';
import recommendedPromptExample from '../../../../../../examples/docs/handoffs/recommendedPrompt.ts?raw';

ハンドオフは、ある エージェント が会話の一部を別の エージェント に委譲できるようにします。これは、異なる エージェント が特定分野に特化している場合に有用です。たとえばカスタマーサポートアプリでは、予約、返金、FAQ を担当する エージェント を用意できます。

ハンドオフは LLM に対してツールとして表現されます。`Refund Agent` にハンドオフする場合、ツール名は `transfer_to_refund_agent` になります。

## ハンドオフの作成

すべての エージェント は `handoffs` オプションを受け付けます。ここには、他の `Agent` インスタンスや `handoff()` ヘルパーが返す `Handoff` オブジェクトを含めることができます。

### 基本的な使い方

<Code lang="typescript" code={basicUsageExample} title="基本的なハンドオフ" />

### `handoff()` によるハンドオフのカスタマイズ

`handoff()` 関数を使うと、生成されるツールを調整できます。

- `agent` – ハンドオフ先の エージェント
- `toolNameOverride` – 既定の `transfer_to_<agent_name>` ツール名を上書き
- `toolDescriptionOverride` – 既定のツール説明を上書き
- `onHandoff` – ハンドオフが発生したときのコールバック。`RunContext` と、必要に応じてパース済みの入力を受け取ります
- `inputType` – ハンドオフに期待する入力スキーマ
- `inputFilter` – 次の エージェント に渡す履歴のフィルター

<Code
  lang="typescript"
  code={customizeHandoffExample}
  title="カスタマイズしたハンドオフ"
/>

## ハンドオフの入力

ハンドオフの呼び出し時に LLM にデータを提供してほしい場合があります。入力スキーマを定義し、`handoff()` で使用します。

<Code lang="typescript" code={handoffInputExample} title="ハンドオフの入力" />

## 入力フィルター

既定では、ハンドオフは会話履歴全体を受け取ります。次の エージェント に渡す内容を変更するには、`inputFilter` を指定します。
一般的なヘルパーは `@openai/agents-core/extensions` にあります。

<Code lang="typescript" code={inputFilterExample} title="入力フィルター" />

## 推奨プロンプト

プロンプトでハンドオフに言及すると、LLM はより確実に応答します。SDK は `RECOMMENDED_PROMPT_PREFIX` を通じて推奨の接頭辞を提供します。

<Code
  lang="typescript"
  code={recommendedPromptExample}
  title="推奨プロンプト"
/>
